import check from 'validate'

// 创建验证规则
const mobileValidate = new check({
    mobile: {
        type: String, // 字符串类型
        required: true, // 必填
        match: /^1[3-9]\d{9}$/, // 正则
        message: '手机号码不合法', // 提示信息
    },
})

// 创建验证码验证规则
const codeValidate = new check({
    code: {
        type: String, // 字符串类型
        required: true, // 必填
        match: /^\d{6}$/, // 正则
        message: '验证码不合法', // 提示信息
    },
})

Page({
    data: {
        // 是否要显示倒计时
        countDownVisible: false,
        // 用户的手机号码
        mobile: '',
        // 倒计时要显示的时间对象
        timeData: null,
        // 手机验证码
        code: '',
    },
    // redirector=house_pkg/pages/list/index
    onLoad({ redirector }) {         //解构赋值
        this.redirector = redirector // 把数据存到页面实例上，全局变量，可以方便在其他函数中使用
    },

    // 倒计时 时间发生改变的时候 会触发
    countDownChange(ev) {
        // console.log(ev.detail)
        this.setData({
            timeData: ev.detail, //ev.detail 返回 还剩下多少时间  {days: 0, hours: 0, minutes: 0, seconds: 35, milliseconds: 999}
            countDownVisible: ev.detail.minutes === 1 || ev.detail.seconds > 0, // 判断倒计时时间 是否已经到了
        })
    },
    // 获取验证码
    async onGetCode() {
        // 直接获取到用户的手机号码
        // const { mobile } = this.data
        const mobile = this.data.mobile
        // 做手机号码的格式验证-稍后再做 ;
        const errs = mobileValidate.validate({ mobile: mobile })
        if (errs.length) {
            return wx.utils.toast(errs[0].message) // 弹出提示信息
        }

        // 发送请求 根据手机号码 获取对应的验证码(真实业务  你的手机会收到短信验证码)
        const res = await wx.$http.get('/code', { mobile })
        console.log(res)
        console.log(res)
        //  开启倒计时
        this.setData({
            countDownVisible: true, // 显示倒计时组件
            code: res.data.data.code
        })
    },

    // 点击登录
    async onSubmit() {
        // 获取手机号码和验证码
        const mobile = this.data.mobile // 转成数字类型
        const code = this.data.code // 转成数字类型

        // 做手机号码的格式验证-稍后再做 ;
        const errs = mobileValidate.validate({ mobile: mobile })
        if (errs.length) {
            return wx.utils.toast(errs[0].message) // 弹出提示信息
        }

        // 验证码 codeValidate
        const codeErrs = codeValidate.validate({ code: code })
        if (codeErrs.length) {
            return wx.utils.toast(codeErrs[0].message) // 弹出提示信息
        }
        // 发送请求 完成登录
        const res = await wx.$http.post('/login', {
            mobile: mobile,
            code: code
        })
        console.log(res)
        if (res.code !== 10000) return wx.utils.toast(res.message)

        // 成功获取了，  把两个token 都存起来
        // 1 存到本地存储中
        // 2 存一份到 应用实例中
        const app = getApp() // 获取到应用实例
        app.setToken(res.data.token, res.data.refreshToken)

        // 登录完毕，重新跳转回去
        if (this.redirector) {
            // navigateTo 不能跳到tabbar页面
            // switchTab  跳到tabbar页面
            // reLaunch 任何页面都能跳转

            // 有来源页面 跳过去
            wx.reLaunch({ url: '/' + this.redirector }) // 需要自己补上  斜杠
        } else {
            // 没有来源页面 跳转到首页 是 tabbar页面
            // wx.navigateTo({ url: '/pages/index/index' })
            wx.switchTab({ url: '/pages/index/index' })
        }
    },
})
